home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1999 July / Macworld (1999-07).dmg / Shareware World / Comms & Internet / HTML and CSS modes / HTML and CSS Modes / htmlEntities.tcl < prev    next >
Text File  |  1999-04-24  |  11KB  |  278 lines

  1. ## -*-Tcl-*-
  2.  # ###################################################################
  3.  #  HTML mode - tools for editing HTML documents
  4.  # 
  5.  #  FILE: "htmlEntities.tcl"
  6.  #                                    created: 98-02-15 18.04.08 
  7.  #                                last update: 99-04-24 13.18.25 
  8.  #  Author: Johan Linde
  9.  #  E-mail: <jlinde@telia.com>
  10.  #     www: <http://www.theophys.kth.se/~jl/Alpha.html>
  11.  #  
  12.  # Version: 2.1.4
  13.  # 
  14.  # Copyright 1996-1999 by Johan Linde
  15.  #  
  16.  # This software may be used freely, and distributed freely, as long as the 
  17.  # receiver is not obligated in any way by receiving it.
  18.  #  
  19.  # If you make improvements to this file, please share them!
  20.  # 
  21.  # ###################################################################
  22.  ##
  23.  
  24. #===============================================================================
  25. # Character entities
  26. #===============================================================================
  27.  
  28. proc htmlEntities.tcl {} {}
  29.  
  30. proc htmlAddCommonChars {} {
  31.     global modifiedModeVars HTMLmodeVars htmlSmallCharsMenu htmlCapitalCharsMenu
  32.     global htmlOtherChars1Menu htmlOtherChars2Menu
  33.     set commonChars $HTMLmodeVars(commonChars)
  34.  
  35.     if {![catch {listpick -l -p "Select chars for the commonly used char list" \
  36.                 [concat $htmlSmallCharsMenu $htmlCapitalCharsMenu $htmlOtherChars1Menu $htmlOtherChars2Menu]} newchars]} {
  37.         set dirty 0
  38.         foreach c $newchars {
  39.             if {[lsearch -exact $commonChars $c] < 0} {
  40.                 set dirty 1
  41.                 set commonChars [lsort [lappend commonChars $c]]
  42.             }
  43.         }
  44.         if {$dirty} {
  45.             lappend modifiedModeVars {commonChars HTMLmodeVars}
  46.             set HTMLmodeVars(commonChars) $commonChars
  47.             htmlRebuildMenu "Rebuiding HTML menu…"
  48.             message "New characters added to the common list."
  49.         }
  50.     }
  51. }
  52.  
  53. proc htmlDefaultCommonChars {} {
  54.     global modifiedModeVars HTMLmodeVars
  55.     
  56.     if {[askyesno "Revert to default common characters?"] == "yes"} {
  57.         set HTMLmodeVars(commonChars) $HTMLmodeVars(defaultCommonChars)
  58.         lappend modifiedModeVars {commonChars HTMLmodeVars}
  59.         htmlRebuildMenu "Rebuiding HTML menu…"
  60.         message "Common character list reverted to default."
  61.     }    
  62. }
  63.  
  64. proc htmlClearCommonChars {} {
  65.     global modifiedModeVars HTMLmodeVars
  66.     
  67.     if {[askyesno "Remove all common characters?"] == "yes"} {
  68.         set HTMLmodeVars(commonChars) {}
  69.         lappend modifiedModeVars {commonChars HTMLmodeVars}
  70.         htmlRebuildMenu "Rebuiding HTML menu…"
  71.         message "Common character list cleared."
  72.     }    
  73. }
  74.  
  75. #
  76. # Insert special character entity
  77. #
  78. proc htmlInsertCharacter {char} {
  79.     global htmlSpecialCharacter htmlCapCharSpecMenu htmlSpecialSymbCharacter
  80.     if {[isSelection]} { deleteSelection }
  81.     foreach c [list SpecialCharacter CapCharSpecMenu SpecialSymbCharacter] {
  82.         if {[info exists html${c}($char)]} {
  83.             insertText &[set html${c}($char)]\;
  84.         }
  85.     }
  86. }
  87.  
  88.  
  89. proc htmlSetEntityKeys {meny} {
  90.     global htmlSmallCharsMenu htmlCapitalCharsMenu htmlOtherChars1Menu htmlOtherChars2Menu PREFS
  91.     if {[file exists "$PREFS:HTML:HTML entity keys"]} {source "$PREFS:HTML:HTML entity keys"}
  92.     foreach key [set html[join $meny ""]Menu] {
  93.         if {[string index $key 0] == "!"} {set key [string range $key 2 end]}
  94.         if {[info exists htmlEntityKeys($key)]} {
  95.             lappend keys [list $htmlEntityKeys($key) $key]
  96.         } else {
  97.             lappend keys [list {} $key]
  98.         }
  99.     }
  100.     bind::fromArray htmlEntityKeys htmlEntityKeysProc 1 HTML
  101.     if {[eval dialog::adjustBindings [list $meny] newkeys modified 0 $keys] != "Cancel"} {
  102.         foreach key $modified {
  103.             if {$newkeys($key) == ""} {unset htmlEntityKeys($key) htmlEntityKeysProc($key); continue}
  104.             set htmlEntityKeys($key) $newkeys($key)
  105.             set htmlEntityKeysProc($key) [list htmlInsertCharacter $key]
  106.         }
  107.     }
  108.     bind::fromArray htmlEntityKeys htmlEntityKeysProc 0 HTML
  109.     htmlSaveCache "HTML entity keys" "array set htmlEntityKeys [list [array get htmlEntityKeys]]\rarray set htmlEntityKeysProc [list [array get htmlEntityKeysProc]]"
  110. }
  111.  
  112.  
  113.  
  114. proc htmlNewCharVar {var val} {
  115.     global htmlSpecialCharacter htmlCharacterSpecial
  116.     set htmlSpecialCharacter($var) $val 
  117.     set htmlCharacterSpecial($val) $var
  118. }
  119.  
  120. proc htmlNewCapCharVar {var men val} {
  121.     global htmlSpecialCapCharacter htmlCapCharacterSpecial htmlCapCharSpecMenu
  122.     set htmlSpecialCapCharacter($var) $val 
  123.     set htmlCapCharacterSpecial($val) $var
  124.     set htmlCapCharSpecMenu($men) $val
  125. }
  126.  
  127. set htmlSmallCharsMenu {eth thorn à á â ã ä å æ ç è é ê ë ì í î ï ñ
  128. ò ó ô õ ö ø œ ù ú û ü y´ ÿ}
  129.  
  130. htmlNewCharVar "ß" szlig
  131. htmlNewCharVar "à" agrave
  132. htmlNewCharVar "á" aacute
  133. htmlNewCharVar "â" acirc
  134. htmlNewCharVar "ã" atilde
  135. htmlNewCharVar "ä" auml
  136. htmlNewCharVar "å" aring
  137. htmlNewCharVar "æ" aelig
  138. htmlNewCharVar "ç" ccedil
  139. htmlNewCharVar "è" egrave
  140. htmlNewCharVar "é" eacute
  141. htmlNewCharVar "ê" ecirc
  142. htmlNewCharVar "ë" euml
  143. htmlNewCharVar "ì" igrave
  144. htmlNewCharVar "í" iacute
  145. htmlNewCharVar "î" icirc
  146. htmlNewCharVar "ï" iuml
  147. htmlNewCharVar    "eth" eth
  148. htmlNewCharVar "ñ" ntilde
  149. htmlNewCharVar "ò" ograve
  150. htmlNewCharVar "ó" oacute
  151. htmlNewCharVar "ô" ocirc
  152. htmlNewCharVar "õ" otilde
  153. htmlNewCharVar "ö" ouml
  154. htmlNewCharVar "ø" oslash
  155. htmlNewCharVar "ù" ugrave
  156. htmlNewCharVar "ú" uacute
  157. htmlNewCharVar "û" ucirc
  158. htmlNewCharVar "ü"    uuml
  159. htmlNewCharVar "y´" yacute
  160. htmlNewCharVar "thorn" thorn
  161. htmlNewCharVar "ÿ"    yuml
  162. htmlNewCharVar "œ" "#339"
  163.  
  164. set htmlCapitalCharsMenu {ETH THORN À A´ A^ Ã Ä Å Æ Ç E` É E^ E¨ I` I´ I^ I¨ Ñ
  165. O` O´ O^ Õ Ö Ø Œ U` U´ U^ Ü Y´ Y¨}
  166.  
  167. htmlNewCapCharVar "À" "À" Agrave
  168. htmlNewCapCharVar "Á" "A´" Aacute
  169. htmlNewCapCharVar "Â" "A^" Acirc
  170. htmlNewCapCharVar "Ã" "Ã" Atilde
  171. htmlNewCapCharVar "Ä" "Ä" Auml
  172. htmlNewCapCharVar "Å" "Å" Aring
  173. htmlNewCapCharVar "Æ" "Æ" Aelig
  174. htmlNewCapCharVar "Ç" "Ç" Ccedil
  175. htmlNewCapCharVar "È" "E`" Egrave
  176. htmlNewCapCharVar "É" "É" Eacute
  177. htmlNewCapCharVar "Ê" "E^" Ecirc
  178. htmlNewCapCharVar "Ë" "E¨" Euml
  179. htmlNewCapCharVar "Ì" "I`" Igrave
  180. htmlNewCapCharVar "Í" "I´" Iacute
  181. htmlNewCapCharVar "Î" "I^" Icirc
  182. htmlNewCapCharVar "Ï" "I¨" Iuml
  183. htmlNewCapCharVar "ETH" "ETH" ETH
  184. htmlNewCapCharVar "Ñ" "Ñ" Ntilde
  185. htmlNewCapCharVar "Ò" "O`" Ograve
  186. htmlNewCapCharVar "Ó" "O´" Oacute
  187. htmlNewCapCharVar "Ô" "O^" Ocirc
  188. htmlNewCapCharVar "Õ" "Õ" Otilde
  189. htmlNewCapCharVar "Ö" "Ö" Ouml
  190. htmlNewCapCharVar "Ø" "Ø" Oslash
  191. htmlNewCapCharVar "Ù" "U`" Ugrave
  192. htmlNewCapCharVar "Ú" "U´" Uacute
  193. htmlNewCapCharVar "Û" "U^" Ucirc
  194. htmlNewCapCharVar "Ü" "Ü"    Uuml
  195. htmlNewCapCharVar "Y´" "Y´" Yacute
  196. htmlNewCapCharVar "THORN" "THORN" THORN
  197. htmlNewCapCharVar "Œ" "Œ" "#338"
  198. htmlNewCapCharVar "Ÿ" "Y¨" "#376"
  199.  
  200. set htmlSpecialSymbCharacter([list quotation mark])    quot
  201. set htmlSpecialSymbCharacter(ampersand) amp
  202. set htmlSpecialSymbCharacter([list less than]) lt
  203. set htmlSpecialSymbCharacter([list greater than]) gt
  204. set htmlSpecialSymbCharacter([list nonbreak space])    nbsp
  205. set htmlSpecialSymbCharacter([list inverted excl. mark])    "#161"
  206. set htmlSpecialSymbCharacter(cent) "#162"
  207. set htmlSpecialSymbCharacter(pound)    "#163"
  208. set htmlSpecialSymbCharacter(currency)    "#164"
  209. set htmlSpecialSymbCharacter(yen)    "#165"
  210. set htmlSpecialSymbCharacter([list broken bar]) "#166"
  211. set htmlSpecialSymbCharacter([list section sign]) "#167"
  212. set htmlSpecialSymbCharacter(diearesis) "#168"
  213. set htmlSpecialSymbCharacter([list copyright sign])    copy
  214. set htmlSpecialSymbCharacter([list feminine ordinal ind.])    "#170"
  215. set htmlSpecialSymbCharacter([list left double angle])    "#171"
  216. set htmlSpecialSymbCharacter([list not sign])    "#172"
  217. set htmlSpecialSymbCharacter([list soft hyphen]) "#173"
  218. set htmlSpecialSymbCharacter([list registered sign])    reg
  219. set htmlSpecialSymbCharacter(macron)    "#175"
  220. set htmlSpecialSymbCharacter(degree)    "#176"
  221. set htmlSpecialSymbCharacter(plus-minus) "#177"
  222. set htmlSpecialSymbCharacter([list superscript two]) "#178"
  223. set htmlSpecialSymbCharacter([list superscript three]) "#179"
  224. set htmlSpecialSymbCharacter([list acute accent]) "#180"
  225. set htmlSpecialSymbCharacter([list micro sign])    "#181"
  226. set htmlSpecialSymbCharacter([list paragraph sign])    "#182"
  227. set htmlSpecialSymbCharacter([list middle dot]) "#183"
  228. set htmlSpecialSymbCharacter(cedilla) "#184"
  229. set htmlSpecialSymbCharacter([list superscript one]) "#185"
  230. set htmlSpecialSymbCharacter([list maculine ordinal ind.]) "#186"
  231. set htmlSpecialSymbCharacter([list right double angle]) "#187"
  232. set htmlSpecialSymbCharacter([list one quarter]) "#188"
  233. set htmlSpecialSymbCharacter([list one half]) "#189"
  234. set htmlSpecialSymbCharacter([list three quarters]) "#190"
  235. set htmlSpecialSymbCharacter([list inverted question mark])    "#191"
  236. set htmlSpecialSymbCharacter(times)    "#215"
  237. set htmlSpecialSymbCharacter(divide)    "#247"
  238. set htmlSpecialSymbCharacter([list en dash]) "#8211"
  239. set htmlSpecialSymbCharacter([list em dash]) "#8212"
  240. set htmlSpecialSymbCharacter([list left single quotation]) "#8216"
  241. set htmlSpecialSymbCharacter([list right single quotation]) "#8217"
  242. set htmlSpecialSymbCharacter([list single low quotation]) "#8218"
  243. set htmlSpecialSymbCharacter([list left double quotation]) "#8220"
  244. set htmlSpecialSymbCharacter([list right double quotation]) "#8221"
  245. set htmlSpecialSymbCharacter([list double low quotation]) "#8222"
  246. set htmlSpecialSymbCharacter(dagger) "#8224"
  247. set htmlSpecialSymbCharacter([list double dagger]) "#8225"
  248. set htmlSpecialSymbCharacter([list per mille sign]) "#8240"
  249. set htmlSpecialSymbCharacter([list left single angle]) "#8249"
  250. set htmlSpecialSymbCharacter([list right single angle]) "#8250"
  251. set htmlSpecialSymbCharacter(florin) "#402"
  252. set htmlSpecialSymbCharacter(bullet) "#8226"
  253. set htmlSpecialSymbCharacter(ellipsis) "#8230"
  254. set htmlSpecialSymbCharacter([list trade mark sign]) "#8482"
  255. set htmlSpecialSymbCharacter([list square root]) "#8730"
  256. set htmlSpecialSymbCharacter(infinity) "#8734"
  257. set htmlSpecialSymbCharacter(integral) "#8747"
  258. set htmlSpecialSymbCharacter([list approximately equal to]) "#8776"
  259. set htmlSpecialSymbCharacter([list not equal to]) "#8800"
  260. set htmlSpecialSymbCharacter([list less-than or equal]) "#8804"
  261. set htmlSpecialSymbCharacter([list greater-than or equal]) "#8805"
  262.  
  263. set htmlOtherChars1Menu {ampersand {greater than} {less than} {!≤less-than or equal} {!≥greater-than or equal}
  264. {!≈approximately equal to} {!≠not equal to} {nonbreak space} {quotation mark} {!“left double quotation}
  265. {!”right double quotation} {!‘left single quotation} {!’right single quotation} {!‚single low quotation}
  266. {!„double low quotation} {!«left double angle} {!»right double angle} {!‹left single angle}
  267. {!›right single angle} {!¿inverted question mark} {!¡inverted excl. mark} {!ªfeminine ordinal ind.}
  268. {!ºmaculine ordinal ind.} {superscript one} {superscript two} {superscript three} {!®registered sign}
  269. {!©copyright sign} {!™trade mark sign} !°degree {!|broken bar}}
  270. set htmlOtherChars2Menu {!€currency !¢cent !£pound !¥yen !ƒflorin {!´acute accent} !¨diearesis !¸cedilla
  271. {!§section sign} {!¶paragraph sign} {soft hyphen} {!–en dash} {!—em dash} {one half} {one quarter}
  272. {three quarters} {!‰per mille sign} !…ellipsis !¯macron {!·middle dot} !•bullet !†dagger {!‡double dagger}
  273. {!µmicro sign} {!¬not sign} !±plus-minus !÷divide times {!√square root} !∞infinity !∫integral}
  274.  
  275.  
  276. rename htmlNewCharVar ""
  277. rename htmlNewCapCharVar ""
  278.